package com.ljx.QueueStack;

import java.util.Arrays;
import java.util.Stack;

/**
 * @author 李加喜
 * @Package com.ljx.QueueStack
 * @date 2021-12-09 11:30
 */
// 503 下一个更大的元素  循环  使用的是单调递增栈
public class XunHuanNextManNum {
    public static void main(String[] args) {
        XunHuanNextManNum xunHuanNextManNum = new XunHuanNextManNum();
        int[] num={1,2,1};
        System.out.println(Arrays.toString(xunHuanNextManNum.nextGreaterElements(num)));
    }
    public int[] nextGreaterElements(int[] nums) {
        int[] res=new int[nums.length];
        int length= nums.length;
        Stack<Integer> stack = new Stack<>();
        for (int i=nums.length*2-1;i>=0;i--){
            while (!stack.isEmpty()&&stack.peek()<=nums[i%length]){
                //早的都是后面的元素 就算遇到大的  也会被当前的这个值拦住了
                stack.pop();
            }
            res[i%length]=stack.isEmpty()?-1:stack.peek();
            stack.push(nums[i%length]);
        }
        return res;
    }
}
